<?xml version="1.0"?>
<Schema name="FDTCIPDTMParameterSchema" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes" xmlns:fdt="x-schema:FDTDataTypesSchema.xml" xmlns:cip="x-schema:DTMCIPDataTypeSchema.xml" xmlns:fdtpar="x-schema:DTMParameterSchema.xml">
	<!-- Version of the Schema -->
	<AttributeType name="schemaVersion" dt:type="number" default="1.0"/>
	<!--Definition of Attributes-->
	<AttributeType name="producedConnectionSize" dt:type="ui2"/>
	<AttributeType name="consumedConnectionSize" dt:type="ui2"/>
	<AttributeType name="expectedPacketRate" dt:type="ui2"/>
	<AttributeType name="inhibitTime" dt:type="ui2"/>
	<AttributeType name="rpi" dt:type="ui4"/>
	<AttributeType name="connectionNameString" dt:type="string"/>
	<AttributeType name="helpString" dt:type="string"/>
	<!--TriggerAndTransport attributes-->
	<AttributeType name="class0" dt:type="boolean" default="0"/>  
	<AttributeType name="class1" dt:type="boolean" default="0"/>  
	<AttributeType name="class2" dt:type="boolean" default="0"/>  
	<AttributeType name="class3" dt:type="boolean" default="0"/>  
	<AttributeType name="class4" dt:type="boolean" default="0"/>  
	<AttributeType name="class5" dt:type="boolean" default="0"/>  
	<AttributeType name="class6" dt:type="boolean" default="0"/>  
	<AttributeType name="triggerCyclic" dt:type="boolean" default="0"/>  
	<AttributeType name="triggerChangeOfState" dt:type="boolean" default="0"/>  
	<AttributeType name="triggerApplication" dt:type="boolean" default="0"/>  
	<AttributeType name="transportTypeListenOnly" dt:type="boolean"/>
	<AttributeType name="transportTypeInputOnly" dt:type="boolean"/>
	<AttributeType name="transportTypeExclusiveOwner" dt:type="boolean"/>
	<AttributeType name="transportTypeRedundantOwner" dt:type="boolean"/>
	<AttributeType name="server" dt:type="boolean" default="0"/>
	<!--ConnectionParameters attributes-->
	<AttributeType name="fixedSizeSupported" dt:type="boolean" default="0"/>
	<AttributeType name="variableSizeSupported" dt:type="boolean" default="0"/>
	<AttributeType name="realTimeTransferFormat" dt:type="ui1" default="0"/>
	<AttributeType name="connectionTypeNULL" dt:type="boolean" default="0"/>
	<AttributeType name="connectionTypeMulticast" dt:type="boolean" default="0"/>
	<AttributeType name="connectionTypePoint2Point" dt:type="boolean" default="0"/>
	<AttributeType name="priorityLow" dt:type="boolean" default="0"/>
	<AttributeType name="priorityHigh" dt:type="boolean" default="0"/>
	<AttributeType name="priorityScheduled" dt:type="boolean" default="0"/>
	<AttributeType name="async" dt:type="ui1"/>
	<AttributeType name="maxConsumerNumber" dt:type="ui1" default="15"/>
	<AttributeType name="maxSafetyConnections" dt:type="ui1"/>
	<AttributeType name="maxSafetyInputCnxns" dt:type="ui1"/>
	<AttributeType name="maxSafetyOutputCnxns" dt:type="ui1"/>
	<AttributeType name="defaultSafetyConnections" dt:type="ui1"/>
	<AttributeType name="scId" dt:type="bin.hex"/>
	<AttributeType name="unId" dt:type="bin.hex"/>
	<AttributeType name="defaultValue" dt:type="string"/>
	<AttributeType name="defaultConnection" dt:type="boolean" default="0"/>
	<AttributeType name="maxCIPConnections" dt:type="ui2"/>
	<AttributeType name="maxIOConnections" dt:type="ui2"/>
	<AttributeType name="maxEMConnections" dt:type="ui2"/>
	
	<AttributeType name="offset" dt:type="i2"/>
	<AttributeType name="base" dt:type="ui2"/>
	<AttributeType name="multiplier" dt:type="ui2"/>
	<AttributeType name="div" dt:type="ui2"/>
	<AttributeType name="precision" dt:type="ui2"/>

	<!--Definition of Elements-->
	<ElementType name="Scaling" content="empty" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<attribute type="offset" required="yes"/>
		<attribute type="base" required="yes"/>
		<attribute type="multiplier" required="yes"/>
		<attribute type="div" required="yes"/>
		<attribute type="precision" required="no"/>
	</ElementType>
	
	<ElementType name="ProducedAssemblyReference" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<element type="cip:CIPObjectAddress" minOccurs="1" maxOccurs="1"/>
	</ElementType>

	<ElementType name="ConsumedAssemblyReference" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<element type="cip:CIPObjectAddress" minOccurs="1" maxOccurs="1"/>
	</ElementType>

	<!-- DeviceNet type of connections -->
	<ElementType name="MasterSlaveConnection" content="mixed" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<attribute type="producedConnectionSize" required="yes"/>
		<attribute type="consumedConnectionSize" required="yes"/>
		<attribute type="expectedPacketRate" required="no"/>
		<attribute type="inhibitTime" required="no"/>
		<element   type="ConsumedAssemblyReference" minOccurs="0" maxOccurs="1"/>
		<element   type="ProducedAssemblyReference" minOccurs="0" maxOccurs="1"/>
	</ElementType>
  
	<!-- forward_open type of connections -->
	<ElementType name="TransportTypeListenOnly" content="empty" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<attribute type="transportTypeListenOnly" required="yes"/>
	</ElementType>

	<ElementType name="TransportTypeInputOnly" content="empty" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<attribute type="transportTypeInputOnly" required="yes"/>
	</ElementType>

	<ElementType name="TransportTypeExclusiveOwner" content="empty" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<attribute type="transportTypeExclusiveOwner" required="yes"/>
	</ElementType>
	
	<ElementType name="TransportTypeRedundantOwner" content="empty" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<attribute type="transportTypeRedundantOwner" required="yes"/>
	</ElementType>
	
	<ElementType name="TriggerAndTransport" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<attribute type="class0" required="no"/>
		<attribute type="class1" required="no"/>
		<attribute type="class2" required="no"/>  
		<attribute type="class3" required="no"/>
		<attribute type="class4" required="no"/>  
		<attribute type="class5" required="no"/>  
		<attribute type="class6" required="no"/> 
		<attribute type="triggerCyclic" required="no"/>  
		<attribute type="triggerChangeOfState" required="no"/>
		<attribute type="triggerApplication" required="no"/>
		<attribute type="server" required="no"/>
		<group order="one" minOccurs="1" maxOccurs="1">
			<element type="TransportTypeListenOnly"/>
			<element type="TransportTypeInputOnly"/>
			<element type="TransportTypeExclusiveOwner"/>
			<element type="TransportTypeRedundantOwner"/>
		</group>
		<element type="cip:ReservedBits" minOccurs="0" maxOccurs="1"/>	
	</ElementType>

	<ElementType name="ConnectionParameters" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<attribute type="fixedSizeSupported" required="no"/>
		<attribute type="variableSizeSupported" required="no"/>
		<attribute type="realTimeTransferFormat" required="no"/>
		<attribute type="connectionTypeNULL" required="no"/>
		<attribute type="connectionTypeMulticast" required="no"/>
		<attribute type="connectionTypePoint2Point" required="no"/>
		<attribute type="priorityLow" required="no"/>
		<attribute type="priorityHigh" required="no"/>
		<attribute type="priorityScheduled" required="no"/>
		<element type="cip:ReservedBits" minOccurs="0" maxOccurs="1"/>	
	</ElementType>

	<ElementType name="Target2OriginatorParameters" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<attribute type="rpi" required="no"/>
		<element type="ConnectionParameters" minOccurs="1" maxOccurs="1"/>	
		<group order="one" minOccurs="1" maxOccurs="*">
			<element type="Size"/>
			<element type="Format"/>
		</group>
	</ElementType>

	<ElementType name="Originator2TargetParameters" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<attribute type="rpi" required="no"/>
		<element type="ConnectionParameters" minOccurs="1" maxOccurs="1"/>	
		<group order="one" minOccurs="1" maxOccurs="*">
			<element type="Size"/>
			<element type="Format"/>
		</group>
	</ElementType>  
	
	<ElementType name="Size" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<group order="one" minOccurs="1" maxOccurs="1">
			<element type="cip:Constant" minOccurs="1" maxOccurs="1"/>	
			<element type="cip:ParameterReference" minOccurs="1" maxOccurs="1"/>
		</group>
	</ElementType>
	
	<ElementType name="Format" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<group order="one" minOccurs="1" maxOccurs="1">
			<element type="cip:ParameterReference" minOccurs="1" maxOccurs="1"/>	
			<element type="fdt:ChannelReference" minOccurs="1" maxOccurs="1"/>	 <!--  reference to an assembly-->
		</group>
	</ElementType>
	
	<ElementType name="Config" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<element type="Size" minOccurs="0" maxOccurs="1"/>	
		<element type="Format" minOccurs="0" maxOccurs="1"/>	
	</ElementType>
	
	<ElementType name="Config1" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<element type="Config" minOccurs="1" maxOccurs="1"/>	
	</ElementType>
	
	<ElementType name="Config2" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<element type="Config" minOccurs="1" maxOccurs="1"/>	
	</ElementType>
	
	<ElementType name="CIPConnection" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<attribute type="connectionNameString" required="yes"/>
		<attribute type="helpString" required="yes"/> 
		<attribute type="cip:ePath" required="yes"/>
		<attribute type="defaultConnection" required="no"/>
		<element   type="Config1" minOccurs="0" maxOccurs="1"/>
		<element   type="Config2" minOccurs="0" maxOccurs="1"/>
		<element   type="TriggerAndTransport" minOccurs="1" maxOccurs="1"/>
		<element   type="Originator2TargetParameters" minOccurs="1" maxOccurs="1"/>
		<element   type="Target2OriginatorParameters" minOccurs="1" maxOccurs="1"/>
	</ElementType>

	<ElementType name="SafetyInputConnection" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<attribute type="async" required="yes"/>
		<attribute type="maxConsumerNumber" required="no"/>
		<element type="CIPConnection" minOccurs="1" maxOccurs="1"/>
	</ElementType>
	
	<ElementType name="SafetyOutputConnection" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<attribute type="maxConsumerNumber" required="no"/>
		<element type="CIPConnection" minOccurs="1" maxOccurs="1"/>
	</ElementType>
	
	<ElementType name="PolledIOConnection" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<element type="MasterSlaveConnection" minOccurs="1" maxOccurs="1"/>
	</ElementType>
	<ElementType name="BitStrobeConnection" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<element type="MasterSlaveConnection" minOccurs="1" maxOccurs="1"/>
	</ElementType>
	<ElementType name="COSConnection" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<element type="MasterSlaveConnection" minOccurs="1" maxOccurs="1"/>
	</ElementType>
	<ElementType name="CyclicConnection" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<element type="MasterSlaveConnection" minOccurs="1" maxOccurs="1"/>
	</ElementType>
	<ElementType name="MulticastPollingConnection" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<element type="MasterSlaveConnection" minOccurs="1" maxOccurs="1"/>
	</ElementType>

	<ElementType name="MasterSlaveConnectionSet" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<element type="PolledIOConnection" minOccurs="0" maxOccurs="1"/>
		<element type="BitStrobeConnection" minOccurs="0" maxOccurs="1"/>
		<group order="one" minOccurs="0" maxOccurs="1">
			<element type="COSConnection" minOccurs="1" maxOccurs="1"/>
			<element type="CyclicConnection" minOccurs="1" maxOccurs="1"/>
		</group>
		<element type="MulticastPollingConnection" minOccurs="0" maxOccurs="1"/>
	</ElementType>
	
	<ElementType name="Capacity" content="empty" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<attribute type="maxCIPConnections" required="no"/>
		<attribute type="maxIOConnections" required="no"/>
		<attribute type="maxEMConnections" required="no"/>
	</ElementType>
	
	<ElementType name="PossibleConnections" content="mixed" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<attribute type="maxSafetyConnections" required="no"/>
		<attribute type="maxSafetyInputCnxns" required="no"/>
		<attribute type="maxSafetyOutputCnxns" required="no"/>
		<attribute type="defaultSafetyConnections" required="no"/>
		<element type="Capacity" minOccurs="0" maxOccurs="1"/>
		<element type="CIPConnection" minOccurs="0" maxOccurs="*"/>
		<element type="PolledIOConnection" minOccurs="0" maxOccurs="1"/>
		<element type="BitStrobeConnection" minOccurs="0" maxOccurs="1"/>
		<element type="COSConnection" minOccurs="0" maxOccurs="1"/>
		<element type="CyclicConnection" minOccurs="0" maxOccurs="1"/>
		<element type="MulticastPollingConnection" minOccurs="0" maxOccurs="1"/>
		<element type="SafetyInputConnection" minOccurs="0" maxOccurs="*"/>
		<element type="SafetyOutputConnection" minOccurs="0" maxOccurs="*"/>
	</ElementType>
	    
	<ElementType name="CurrentConnections" content="mixed" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<element type="CIPConnection" minOccurs="0" maxOccurs="*"/>
		<element type="MasterSlaveConnectionSet" minOccurs="0" maxOccurs="1"/>
	</ElementType>
	
	<ElementType name="AssemblyMemberDefinition" content="eltOnly" model="open">
		<attribute type="fdt:nodeId" required="no"/>
		<attribute type="fdt:id" required="no"/><!-- used in the AssemblyDefinition to reference this member -->
		<attribute type="fdt:tag" required="yes"/>
		<attribute type="fdt:descriptor" required="no"/>
		<attribute type="cip:dataType" required="yes"/>
	    <attribute type="defaultValue" required="no"/>
	    <element type="Scaling" minOccurs="0" maxOccurs="1"/>
		<element type="cip:CIPObjectAddress" minOccurs="0" maxOccurs="1"/><!-- only for accessable parameters -->
	    <element type="fdt:BitEnumeratorEntries" minOccurs="0" maxOccurs="1"/>
	    <element type="fdt:EnumeratorEntries" minOccurs="0" maxOccurs="1"/>
	    <element type="fdt:Unit" minOccurs="0" maxOccurs="1"/>
	    <element type="fdt:Ranges" minOccurs="0" maxOccurs="1"/>
	    <element type="fdt:SubstituteValue" minOccurs="0" maxOccurs="1"/>
	</ElementType>  

	<ElementType name="AssemblyMemberDefinitions" content="mixed" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<element type="AssemblyMemberDefinition" minOccurs="0" maxOccurs="*"/>
	</ElementType>
	
	<ElementType name="CIPNode" content="eltOnly" model="closed">
	  <attribute type="fdt:nodeId" required="no"/>
		<attribute type="fdt:readAccess" required="no"/>
		<attribute type="fdt:writeAccess" required="no"/>
		<!-- needed for DeviceNet Safety, EthernetIP and ControlNet devices -->
		<attribute type="fdtpar:configurationData" required="no" />
		<attribute type="scId" required="no" />
		<attribute type="unId" required="no" />
		<!--  needed for connection establishment in DeviceNet Safety -->
		<element   type="cip:CIPDeviceIdentity" minOccurs="1" maxOccurs="1"/>
		<element   type="cip:CIPNodeID" minOccurs="1" maxOccurs="1"/>
		<element   type="PossibleConnections" minOccurs="1" maxOccurs="1"/>
		<element   type="CurrentConnections" minOccurs="1" maxOccurs="1"/>
		<element   type="AssemblyMemberDefinitions" minOccurs="0" maxOccurs="1"/>
	</ElementType>
</Schema>
